/*
 * Copyright (c) 2011-2021, baomidou (jobob@qq.com).
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package cc.siyecao.mapper.enums;


import cc.siyecao.mapper.common.util.StringUtils;
import lombok.AllArgsConstructor;

/**
 * SQL 保留关键字枚举
 *
 * @author hubin
 * @since 2018-05-28
 */
@AllArgsConstructor
public enum SqlKeyword {
    AND( "AND" ),
    OR( "OR" ),
    NOT( "NOT" ),
    IN( "IN" ),
    NOT_IN( "NOT IN" ),
    LIKE( "LIKE" ),
    NOT_LIKE( "NOT LIKE" ),
    EQ( "=" ),
    NE( "<>" ),
    GT( ">" ),
    GE( ">=" ),
    LT( "<" ),
    LE( "<=" ),
    IS_NULL( "IS NULL" ),
    IS_NOT_NULL( "IS NOT NULL" ),
    GROUP_BY( "GROUP BY" ),
    HAVING( "HAVING" ),
    ORDER_BY( "ORDER BY" ),
    EXISTS( "EXISTS" ),
    NOT_EXISTS( "NOT EXISTS" ),
    BETWEEN( "BETWEEN" ),
    NOT_BETWEEN( "NOT BETWEEN" ),
    ASC( "ASC" ),
    DESC( "DESC" );

    public String getKeyword() {
        return keyword;
    }

    private final String keyword;

    public static String getKeyword(String name) {
        if (StringUtils.isBlank( name )) {
            return null;
        }
        for (SqlKeyword keyword : values()) {
            if (name.equals(keyword.name())) {
                return keyword.getKeyword();
            }
        }
        throw new RuntimeException("'QueryType' not found By " + name);
    }
}
